﻿using SYMModelo.Modelo.Entidades;
using SYMPersistencia;
using System.Data.SQLite;

namespace SYMModelo.Factorias
{
    //Todas las factorias, deben heredar de factoria
    public class FactoriaArbitro : Factoria
    {
        //Todas deben tener un constructor PRIVATE que reciba una transaccionBase (Se llama internamente)
        private FactoriaArbitro(TransaccionBase tran)
            : base(tran)
        {
        }

        //Nombre de la tabla a la que se asocia las entidades construidas por esta factoria
        public override string NombreTabla
        {
            get { return "Arbitro"; }
        }
        //Deben devolver siempre el objeto vacio, a lo sumo con lo basico para que sea un objeto consistente 
        //(si nos ponemos en exquisitos)
        protected override IPersistibleModelo NuevoPersistible(HashTableNCSensitive htsNc)
        {
            return new Arbitro();
        }

        //Los campos claves que definen una entidad, separados por PIPE (|)
        protected override string Id(HashTableNCSensitive hts)
        {
            return hts["Dni"].ToString();
        }
        //Comando basico para buscar una entdad por ID (Si me dan tiempo lo pongo generico en Factoria)
        public override System.Data.SQLite.SQLiteCommand ComandoXId()
        {
            SQLiteCommand comm = new SQLiteCommand("SELECT *  FROM " + this.NombreTabla + " WHERE Dni=@Dni", this.Transaccion.Conexion);
            comm.Parameters.Add("@Dni", System.Data.DbType.Int64);
            return comm;
        }
        //nombre de la columna que sea autoincremental SOLO si no se usa identity 
        //Esto es para aplicacion Multithread-MultiUsuario que no es nuestro caso.
        public override string CampoUltimoId
        {
            get
            {
                return null;
            }
        }
    }
}
